import { useUserStore } from '@/store'
import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '@/router'
import { useRouter, useRoute } from "vue-router";
let $router = useRouter();
import {logout} from '@/api/login'

//创建实例
const request = axios.create({
  baseURL: import.meta.env.VITE_API,
  timeout: 50000 //超时时间
})
// 添加请求拦截器
request.interceptors.request.use(
  (config) => {
    // // 在发送请求之前做些什么
    // const useStore = useUserStore()
    // if (useStore.token) {
    //   config.headers.token = useStore.token
    //   config.headers.Authorization=useStore.token;
    // }

    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
request.interceptors.response.use(
  function (response) {
    //文件传输的情况没有code
    if(response.status === 200 && !response.data.code){
      return response.data
    }
    // 对响应数据做点什么
    if (response.data.code === 200) {
      //这样的返回还是axios的封装
      return response.data.data
      // return response.data.data
      //这样就可以是接受自己类型的回调了
    } else {
      // ElMessage.error(response.data.msg || '服务异常')
      // return Promise.reject(response.data)
      //判断错误消息是否包含权限两个字，包含的话退出的到登录页面
      if(response.data.msg.indexOf('缺少权限：')!==-1){
        ElMessage.error("权限更改请重新登录")
        localStorage.removeItem('UID');
        logout()
        router.push('/login')
        window.location.reload()
      }
      return response.data//这里改成错误就返回带code的
      
    }
  },function (error){
    // 对响应错误做点什么
    // let msg = ''
    // const status = error.response.status
    // switch (status) {
    //   case 401:
    //     msg = 'token过期'
    //     break
    //   case 403:
    //     msg = '无权访问'
    //     break
    //   case 404:
    //     msg = '请求地址错误'
    //     break
    //   case 500:
    //     msg = '服务器出现问题'
    //     break
    //   default:
    //     msg = '无网络'
    // }
    ElMessage.error(error.message)
    router.push('/login')
    return Promise.reject(error)
  }
)

export default request
